package com.kele.dao;

import com.kele.domain.Blog;
import com.kele.domain.Collections;
import com.kele.domain.User;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;

@Repository
public interface BlogDao {

    /**
     * 查询所有博客
     * @return
     */
   List<Blog> findBlogs(@Param("pageNum") int pageNum, @Param("dataNums") int dataNums);

    /**
     * 根据博客id查询博客
     * @param bid,id
     * @return
     */
   Blog queryBlogById(@Param(value = "bid") int bid,
                      @Param(value = "id") int id);

    /**
     * 根据类型查询博客信息
     * @param field
     * @return
     */
  List<Blog> findByTitle(@Param("field")String field);

    /**
     * 删除博客对象
     * @param id
     * @return
     */
   int deleteBlog(int id);

    /**
     * 点赞+1
     * @param bid
     * @return
     */
   int addThumbsUp(int bid);

    /**
     * 点赞-1
     * @param bid
     * @return
     */
    int subThumbsUp(int bid);

    /**
     * 博客发表在数据库里
     * @param blog
     * @return
     */
    Integer addBlog(Blog blog);

    /**
     * 热度+1---点进去文章就会加一个热度
     * @param id
     * @return
     */
    int addDoh(int id);

    /**
     * 根据博客id查找文章
     *
     */
    Blog findById(int bid);

    /**
     * 展示博客内容到主页面
     * @return
     */
    List<Blog> showBlogs();

    /**
     * 记录当前博主发布的博客数量
     */
    int countArticle(String blogger);

    /**
     * 收藏+1
     * @param id
     * @return
     */
    int addCollection(int id);

    /**
     * 点赞-1
     * @param id
     * @return
     */
    int subCollection(int id);


    /**
     * 博主下遍历博客
     * @param blogger
     * @return
     */
    List<Blog> findBlogsByBlogger(String blogger);

    /**
     * 博主个人中心内的我的收藏
     * @param collections
     * @return
     */
    List<Collections> showCollections(Collections collections);

    /**
     * 管理员
     * 找出所有的未审核的博客
     * @param blogger 博主
     * @param flag 查看的表示
     * @return 返回一个集合，内部为未审核的博客（ flag=0）
     */
    List<Blog> selectExamineBlogs(@Param("blogger") String blogger,@Param("bid")int bid,@Param("flag")int flag);

    /**
     * 管理员
     * 查找到不合格的博客
     * @return
     */
    List<Blog> selectBadBlogs();

    /**
     *  通过博主的名称查找到相应的博客，于此同时需要判定的是 ： 这类博客只能博主一个人或者管理员进行操作
     * @param bid 博客id
     * @param blogger 博主
     * @return 返回一个博客类
     */
    Blog undeterminedBlogs(@Param("blogger") String blogger,@Param(value = "bid") int bid);

    /**
     * 使得一个博客通过审批
     * @param bid 博客的id
     * @param flag 表示操作类型
     * @return 返回一个数据，使得博客能够通过审批
     */
    int executeBlog(@Param("bid") int bid,@Param("flag") int flag);


    /**
     * 查询--》根据类型
     * @param type 文章类型
     * @return 哟个集合，包含了该类型的内容
     */
    List<Blog> classify(String type);

    /**
     * 后台管理博客模糊查询(根据属性)
     * @return
     */
    List<User> fuzzyBolg(String attribute);

 Integer deleteArray(Integer[] bids);




}

